import org.w3c.dom.stylesheets.LinkStyle;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * @Author ZhangCuirong
 * @Date 2025/9/17 15:11
 * @description:
 */
public class Solution08dot06 {
    public void hanota(List<Integer> A, List<Integer> B, List<Integer> C) {
        move(A.size(), A, B, C);
    }

    public void move(int N, List<Integer> source, List<Integer> temp, List<Integer> target) {
        if (N == 1) {
            // 将最后一个元素从源列表移到目标列表
            target.add(source.remove(source.size() - 1));
            return;
        }
        // 第一步：将N-1个元素从source移到temp（用target作为临时存储）
        move(N - 1, source, target, temp);
        // 第二步：将第N个元素从source移到target
        target.add(source.remove(source.size() - 1));
        // 第三步：将N-1个元素从temp移到target（用source作为临时存储）
        move(N - 1, temp, source, target);
    }

    public static void main(String[] args) {
        Solution08dot06 solution = new Solution08dot06();
        //Arrays.asList()Collections.emptyList();返回的是一个固定大小的内部类列表，不支持add、remove操作。
        // 关键：所有集合都必须用ArrayList初始化，确保可修改
        List<Integer> A = new ArrayList<>(Arrays.asList(2, 1, 0)); // 初始圆盘
        List<Integer> B = new ArrayList<>(Collections.emptyList());
        List<Integer> C = new ArrayList<>();
        solution.hanota(A, B, C);
        System.out.println(A);
        System.out.println(B);
        System.out.println(C);

    }
}
